/*
 * Copyright 2010-2011 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package kr.co.cooknote.config;

import javax.inject.Inject;

import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

/**
 * Configuration for Greenhouse application @Components such as @Services, @Repositories, and @Controllers.
 * Loads externalized property values required to configure the various application properties.
 * Not much else here, as we rely on @Component scanning in conjunction with @Inject by-type autowiring.
 * @author Keith Donald
 */
@Configuration
@ComponentScan(basePackages="kr.co.cooknote")
@PropertySource(
			{
				"classpath:properties/fileLocation.xml"
				,"classpath:properties/info.xml"
				,"classpath:properties/error.xml"
				,"classpath:properties/warn.xml"
				,"classpath:properties/db_info.xml"
			}
		)
//@PropertySource("classpath:/com/myco/app.properties")
public class ComponentConfig {

    @Inject
    static
    Environment env;
	/**
	 * Properties to support the 'embedded' mode of operation.
	 */
	@Configuration
	@Profile("embedded")
	@PropertySource("classpath:kr/co/cooknote/config/embedded.properties")
	static class Embedded {
	}

	/**
	 * Properties to support the 'standard' mode of operation.
	 */
	@Configuration
	@Profile("standard")
	@PropertySource("classpath:application.properties")
	static class Standard {
	}



	@Bean
	public static PropertyPlaceholderConfigurer propertyPlaceholderConfigurer() {



		PropertyPlaceholderConfigurer pp = new PropertyPlaceholderConfigurer();
		pp.setLocations(new Resource[] {

//				new ClassPathResource(env.getProperty("file_info"))
//				,new ClassPathResource(env.getProperty("file_warn"))
//				,new ClassPathResource(env.getProperty("file_error"))
				new ClassPathResource("properties/info.xml")
				,new ClassPathResource("properties/warn.xml")
				,new ClassPathResource("properties/error.xml")
				,new ClassPathResource("properties/db_info.xml")

		});
		return pp;
	}

//	@Bean
//	   public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
//	      return new PropertySourcesPlaceholderConfigurer();
//	   }




}